home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / LIB / DESK / CORE / Desk / h / DeskMem < prev    next >
Text File  |  1996-05-21  |  3KB  |  87 lines

  1.  
  2. #ifndef __Desk_DeskMem_h
  3. #define __Desk_DeskMem_h
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include <stdlib.h>
  8. #include <stddef.h>
  9. #ifndef __Desk_Core_h
  10. #include "Desk.Core.h"
  11. #endif
  12. void *Desk_DeskMem_Malloc(size_t size);
  13. void *Desk_DeskMem_Calloc(size_t num, size_t size);
  14. void *Desk_DeskMem_Realloc(void *ptr, size_t size);
  15. void Desk_DeskMem_Free(void *ptr);
  16. #define Desk_DeskMem_MallocType(type) (type *) Desk_DeskMem_Malloc(sizeof(type))
  17. #define Desk_DeskMem_CallocType(n, type) ((type *) Desk_DeskMem_Calloc(n, sizeof(type)))
  18. typedef struct Desk_deskmem_errorblock {
  19. size_t size;
  20. void* ptr;
  21. }
  22. Desk_deskmem_errorblock;
  23. #ifdef Desk__using_SDLS
  24. extern Desk_deskmem_errorblock* Desk_DeskMem__Ref_errorblock(void);
  25. #endif
  26. #if defined(Desk__using_SDLS) && !defined(Desk__making_DeskMem)
  27. #define Desk_deskmem_globalerror (*Desk_DeskMem__Ref_errorblock())
  28. #else
  29. extern Desk_deskmem_errorblock Desk_deskmem_globalerror;
  30. #endif
  31. #ifdef Desk_DeskLib_DEBUG
  32. extern int Desk_deskmem_debuglevel;
  33. #endif
  34. typedef void* (*Desk_deskmem_mallocfn) (size_t); 
  35. typedef void* (*Desk_deskmem_reallocfn) (void *, size_t); 
  36. typedef void* (*Desk_deskmem_callocfn) (size_t, size_t); 
  37. typedef void (*Desk_deskmem_freefn) (void *); 
  38. typedef struct {
  39. Desk_deskmem_mallocfn malloc;
  40. Desk_deskmem_reallocfn realloc;
  41. Desk_deskmem_callocfn calloc;
  42. Desk_deskmem_freefn free;
  43. }
  44. Desk_deskmem_functionsblock; 
  45. void Desk_DeskMem_SetAllocFunctions(
  46. Desk_deskmem_mallocfn m,
  47. Desk_deskmem_reallocfn r,
  48. Desk_deskmem_callocfn c,
  49. Desk_deskmem_freefn f,
  50. Desk_deskmem_functionsblock* oldfunctions
  51. );
  52. #ifdef Desk__using_SDLS
  53. extern Desk_deskmem_functionsblock* Desk_DeskMem__Ref_functionsblock(void);
  54. #endif
  55. #if defined(Desk__using_SDLS) && !defined(Desk__making_DeskMem)
  56. #define Desk_deskmem__functions (*Desk_DeskMem__Ref_functionsblock())
  57. #else
  58. extern Desk_deskmem_functionsblock Desk_deskmem__functions;
  59. #endif
  60. #define Desk_DeskMem_RawMalloc(size) (Desk_deskmem__functions.malloc(size))
  61. #define Desk_DeskMem_RawRealloc(ptr, size) (Desk_deskmem__functions.realloc(ptr, size))
  62. #define Desk_DeskMem_RawCalloc(num, size) (Desk_deskmem__functions.calloc(num, size))
  63. #define Desk_DeskMem_RawFree(ptr) (Desk_deskmem__functions.free(ptr))
  64. typedef struct {
  65. void* data;
  66. int size;
  67. int datasize;
  68. int increment;
  69. }
  70. Desk_deskmem_buffer;
  71. void Desk_DeskMem_BufferInit(Desk_deskmem_buffer* buffer, int increment);
  72. void Desk_DeskMem_BufferFree(Desk_deskmem_buffer* buffer);
  73. void Desk_DeskMem_BufferEnsure(Desk_deskmem_buffer* buffer, int min);
  74. void Desk_DeskMem_BufferEnsureExtra(Desk_deskmem_buffer *buffer, int extra);
  75. #define Desk_DeskMem_BufferGetSize(buffer) ((buffer)->size)
  76. #define Desk_DeskMem_BufferGetDataSize(buffer) ((buffer)->datasize)
  77. #define Desk_DeskMem_BufferGetString(buffer) ((char*) (buffer)->data)
  78. #define Desk_DeskMem_BufferGetIntArray(buffer) ((int*) (buffer)->data)
  79. #define Desk_DeskMem_BufferGetDoubleArray(buffer) ((double*) (buffer)->data)
  80. void Desk_DeskMem_BufferStrCat(Desk_deskmem_buffer* buffer, const char* extra);
  81. void Desk_DeskMem_BufferStrNCat(Desk_deskmem_buffer* buffer, const char* extra, int extralen);
  82. void Desk_DeskMem_BufferStrCpy(Desk_deskmem_buffer* buffer, const char* s);
  83. #ifdef __cplusplus
  84. }
  85. #endif
  86. #endif
  87.